﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conexion;
using System.Data;
using AccesoDatos.Objetos;

namespace AccesoDatos.Manejador
{
    public class Manejador_Infonavit
    {
        ClsConexion conexion = new ClsConexion();
        objInfonavit obj = new objInfonavit();
        public int id_actual, id2;
        public DateTime fecha;
        public DataTable ListaNoInfonavit(string Buscar, string Sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@Sucursal", Sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Infonavit_Lista_Sin_Infonavit", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public DataTable ListaInfonavit(string Buscar, string Sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@Sucursal", Sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Infonavit_Lista_Con_Infonavit", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public bool InsercionInfonavit(int id_empleado, string numero_credito, string tipo_infonavit,
            string descuento_infonavit, string monto_descontar)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
                lista.Add(new ClsParametros("@numero_credito", numero_credito));
                lista.Add(new ClsParametros("@tipo_infonavit", tipo_infonavit));
                lista.Add(new ClsParametros("@descuento_infonavit", descuento_infonavit));
                lista.Add(new ClsParametros("@monto_descontar", monto_descontar));
                DataTable datos = conexion.Datatable_standart("sp_RH_Infonavit_add_infonavit", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                id_actual = int.Parse(Info[0].ToString().Trim());
                id2 = int.Parse(Info[1].ToString().Trim());
                fecha = DateTime.Parse(Info[2].ToString().Trim());
                return true;
            }
            catch
            {
                return false;
            }
        }



        public bool Modificarinfonavit(int id_infonavit, string numero_credito, string tipo_infonavit,
            string descuento_infonavit, string monto_descontar
           )
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_infonavit", id_infonavit.ToString()));
                lista.Add(new ClsParametros("@numero_credito", numero_credito));
                lista.Add(new ClsParametros("@tipo_infonavit", tipo_infonavit));
                lista.Add(new ClsParametros("@descuento_infonavit", descuento_infonavit));
                lista.Add(new ClsParametros("@monto_descontar", monto_descontar));
                DataTable datos = conexion.Datatable_standart("sp_RH_Infonavit_Modifica_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                fecha = DateTime.Parse(Info[0].ToString().Trim());
                return true;
            }
            catch
            {
                return false;
            }

        }

        public objInfonavit InfonavitEmpleado(string id_empleado)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_empleado", id_empleado));
                DataTable datos = conexion.Datatable_standart("sp_RH_Infonavit_Consulta_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                obj.Id_Infonavit = int.Parse(Info[0].ToString().Trim());
                obj.Id_Empleado = int.Parse(Info[1].ToString().Trim());
                obj.Numero_De_Credito = (Info[2].ToString().Trim());
                obj.Fecha_Registro_Inf = DateTime.Parse(Info[4].ToString().Trim());
                obj.Id_Infonavit_Desc = int.Parse(Info[5].ToString().Trim());
                obj.Tipo_De_Infonavit = (Info[7].ToString().Trim());
                obj.Descuento_Infonavit = (Info[8].ToString().Trim());
                obj.Monto_Descontar = (Info[9].ToString().Trim());
                

                return obj;
            }
            catch { return null; }
        }

        public DataTable ReporteSucursales(string id_sucursal, string tipo, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            lista.Add(new ClsParametros("@tipo", tipo));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Infonavit_Reporte_Sucursal", lista);
            return X;
        }

        public DataTable ConsultaReporteSucursales(string id_sucursal, string tipo, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            lista.Add(new ClsParametros("@tipo", tipo));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Infonavit_Reporte_Empleado", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public objInfonavit ConsultaSalarioMin(int id_sucursal)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_sucursal", id_sucursal.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Infonavit_Consulta_SalarioMin", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                obj.Salario_Minimo = (Info[0].ToString().Trim());
               
                return obj;
            }
            catch { return null; }
        }

        public int DiasCorrespondientes(int antiguedad)
        {
            try
            {
                objRH obj = new objRH();
                objVacaciones objV = new objVacaciones();

                List<ClsParametros> lista = new List<ClsParametros>();

                lista.Add(new ClsParametros("@antiguedad", antiguedad.ToString()));

                DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_DiasporLey", lista);
                DataRow[] array = new DataRow[X.Rows.Count];
                X.Rows.CopyTo(array, 0);
                object[] Info = X.Rows[0].ItemArray;

                objV.Dias_Correspondientes = int.Parse(Info[0].ToString().Trim());
                return objV.Dias_Correspondientes;
            }
            catch { return 1; }
        }

    }
}
